{Pseudotrans - Codificador de pseudocodigo a lenguaje pascal
    Copyright (C) 2006  Alejandro Lucas Baldres, Nicolas Secreto
    Copyright (C) 2011  Alejandro Lucas Baldres

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License,or any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA}
(**************************************************************)
{PROGRAMACION: ALEJANDRO LUCAS BALDRÉS                         }
{FECHA: 17/09/06                                               }
{LICENCIA: GNU/GPL                                             }
{--------------------------------------------------------------}
{Unidad de agregado de Punto y coma			       }
{--------------------------------------------------------------}
{COMPILADO CON FREEPASCAL                                      }
//Comment Modify: 12/10/2011
unit Agrego_Pto;

interface
uses
SysUtils,Classes,StrUtils;
 
procedure Agrego (var Cadena:TStrings;Directorio_pto:String);

implementation
//Agrego pto y coma // add ;
procedure Agrego (var Cadena:TStrings;Directorio_pto:String);
 var
 Pal_Sin_pto,aux,aux2:String[130];
 LlevaPto_Coma:Boolean=true;//Variable que determina si lleva o no pto y coma
			   //Var what determine if contain ; or not
 archivo:text;
 i:integer;

 begin
 for i:=0 to Cadena.count-1 do //Recorro el fuente en pseudocodigo / Aroun the code in pseudocode
     begin
     aux:=uppercase(Cadena.Strings[i]);
     if i=Cadena.count-1 then //Si es el ultimo renglon o sea end o fin le agrego el punto/ If is the ultime line add the point
        Cadena.Strings[i]:=Cadena.Strings[i]+'.'
        else
        begin
        aux2:=uppercase(Cadena.Strings[i+1]);
        assign(archivo,Directorio_pto);//Abro el archivo de las palabras sin punto / Open the file with the word whitout point
        reset(archivo);
        while (not eof(archivo))and(llevaPto_coma) do //Si no termina el File y verdad de la variable
       	   begin
 	   readln(archivo,Pal_Sin_pto); 
           if (FindPart(uppercase(Pal_Sin_pto),aux)>0)or ((Length(aux)=0)
        	or((Length(aux)=1)and(aux=#0)))or(FindPart('SINO ',aux2)>0) then 
        	begin
        	LlevaPto_Coma:=false;
        	end
              else begin
	         LlevaPto_Coma:=true;
                  end;
 	      end;
	//SI LlevaPto_coma = verdadero le agrego el punto y coma / If LLevaPto_coma = verdadero add the ;
        if LlevaPto_Coma then Cadena.Strings[i]:=Cadena.Strings[i]+';' 
          else LlevaPto_Coma:=true;
        close(Archivo);
        end;
    end;
end;
////////////////////////////////////////////////////////////////////fin agrego / end add ;    
end.
